/***************************************************************************
 创建者: hualei
 开始时间: 2018-12-20
 copyright: (C) 华友高科
 修改说明: (每次有修改就添加一条，带有 修改人，修改时间，修改描述)
 example (1) hualei 2018-10-15 类的具体实现代码编写

 ***************************************************************************
 *  ROBOT_MOVE 机械手控制指令具体实现                                                                       *
 ***************************************************************************/
#ifndef ROBOTMOVEINSTRUCTIONLOGIC_H
#define ROBOTMOVEINSTRUCTIONLOGIC_H

#include "instructionEnum.h"
#include "GeneralDefine.h"
#include "robotmoveinstruction.h"

#define OK 1

class ProgramSet;
class RegData;
class ProgramEngine;

class RobotMoveInstructionLogic
{
public:
    RobotMoveInstructionLogic(int robotIdIn, ProgramSet* programSetIn,ProgramEngine* programEngineIn,
                              RegData *regDataIn);

    /**
     * @brief startRobotMove        开始执行机械手控制指令
     * @param programNumIn          程序编号
     * @param instructionIn         机械手控制指令
     * @param lineIndex             运行行号
     * @return                      正常丶停止丶完成丶错误
     */
    E_PROGRAM_LOOP_RESULT startRobotMove(int programNumIn, const RobotMoveInstruction &instructionIn, int lineIndex);

private:

    void addMsg( int messageLevel,
                 std::string componentName,
                 std::string messageType,
                 int messageCode,
                 int robotId,
                 int parameter1 = 0,
                 int parameter2 = 0,
                 int parameter3 = 0,
                 int parameter4 = 0,
                 QString message= "");

private:

    // 机器人编号
    int robotId;

    // 程序集
    ProgramSet* programSet;

    /**
     * @brief regData                   寄存器类
     */
    RegData *regData;

    /**
     * @brief programEngine             程序解释引擎
     */
    ProgramEngine* programEngine;

};

#endif // ROBOTMOVEINSTRUCTIONLOGIC_H
